home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_force_seeing.cog < prev    next >
Text File  |  1998-02-25  |  5KB  |  189 lines

  1. # Jedi Knight Cog Script
  2. #
  3. # FORCE_SEEING.COG
  4. #
  5. # FORCEPOWER Script - Seeing
  6. #  Light Side Power
  7. #  Bin 23
  8. #
  9. # [YB]
  10. #
  11. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  12.  
  13.  
  14. symbols
  15.  
  16. thing       player                           local
  17.  
  18. flex        cost=30.0                        local
  19. flex        mana                             local
  20.  
  21. sound       seeingSound=ForceSee01.WAV       local
  22. sound       seeingSound2=ForceSee02.WAV      local
  23. int         channel=-1                       local
  24.  
  25. int         rank=0                           local
  26. int         flags=0                          local
  27. int         old_flags=0                      local
  28.  
  29. int         effectHandle=-1                  local
  30.  
  31. int         inbubble=0                       local
  32.  
  33. message     startup
  34. message     shutdown
  35. message     activated
  36. message     timer
  37. message     pulse
  38. message     newplayer
  39. message     killed
  40. message     selected
  41. message     enterbubble
  42. message     exitbubble
  43.  
  44. end
  45.  
  46. # ========================================================================================
  47.  
  48. code
  49.  
  50. startup:
  51.    player = GetLocalPlayerThing();
  52.    inbubble = 0;
  53.    old_flags = GetMapModeFlags();
  54.    call stop_power;
  55.  
  56.    Return;
  57.  
  58. # ........................................................................................
  59.  
  60. shutdown:
  61.    call stop_power;
  62.  
  63.    Return;
  64.  
  65. # ........................................................................................
  66.  
  67. activated:
  68.    if(inbubble) Return;
  69.  
  70.    if(!IsInvActivated(player, 23))
  71.    {
  72.       mana = GetInv(player, 14);
  73.       if(mana >= cost || GetInv(player, 14) >= GetInv(player, 69))
  74.       {
  75.          if(GetInv(player, 64) != 1) ChangeInv(player, 14, -cost);
  76.  
  77.          // Send a "force disturbance"...
  78.          if(!IsMulti())
  79.           SendMessageExRadius(GetThingPos(player), cost, 0x4, splash, 23, 0, 0, 0);
  80.  
  81.          rank = GetInv(player, 23);
  82.          if(rank == 1) flags = 0xc;          // players & actors
  83.          else if(rank == 2) flags = 0xc;     // players & actors
  84.          else if(rank == 3) flags = 0x1c;    // players & actors & items
  85.          else if(rank == 4) flags = 0x3c;    // players & actors & items & projectiles
  86.  
  87.          PlayMode(player, 24);
  88.  
  89.          // Play activation sound
  90.          PlaySoundThing(seeingSound, player, 1.0, -1, -1, 0x80);
  91.  
  92.          // Play loop sound at 0.0 volume and fade it in to 1.0 volume in 0.75 secs
  93.          channel = PlaySoundThing(seeingSound2, player, 0.0, -1, -1, 0x81);
  94.          ChangeSoundVol(channel, 1.0, 0.75);
  95.  
  96.          effectHandle = newColorEffect(0, 1, 1, 0, 0, 0, 0, 0, 0, 1.0);
  97.          EnableIRMode(0.3 + 0.05 * rank, 1);
  98.          old_flags = GetMapModeFlags();
  99.          SetMapModeFlags(flags);
  100.          SetInvActivated(player, 23, 1);
  101.          SetTimerEx(5 + 5 * rank, 1, 0, 0);
  102.          SetPulse(0.5);
  103.       }
  104.    }
  105.  
  106.    Return;
  107.  
  108. # ........................................................................................
  109.  
  110. timer:
  111.    call stop_power;
  112.  
  113.    Return;
  114.  
  115.  
  116. # ........................................................................................
  117.  
  118. pulse:
  119.    // check that the player didn't die
  120.    if(GetThingHealth(player) < 1)
  121.    {
  122.       call stop_power;
  123.    }
  124.  
  125.    Return;
  126.  
  127. # ........................................................................................
  128.  
  129. selected:
  130.    jkPrintUNIString(player, 23);
  131.    Return;
  132.  
  133. # ........................................................................................
  134.  
  135. killed:
  136.    if(GetSenderRef() != player) Return;
  137.  
  138. newplayer:
  139.    call stop_power;
  140.    Return;
  141.  
  142. # ........................................................................................
  143.  
  144. enterbubble:
  145.    inbubble = 1;
  146.    call stop_power;
  147.    Return;
  148.  
  149. # ........................................................................................
  150.  
  151. exitbubble:
  152.    inbubble = 0;
  153.    Return;
  154.  
  155. # ........................................................................................
  156.  
  157. stop_power:
  158.    SetPulse(0);
  159.    KillTimerEx(1);
  160.    if(channel != -1)
  161.    {
  162.       StopSound(channel, 0.1);
  163.       channel = -1;
  164.    }
  165.  
  166.    if(effectHandle!=-1)
  167.    {
  168.       freeColorEffect(effectHandle);
  169.       effectHandle = -1;
  170.    }
  171.  
  172.    // Don't disable IR mode if IR Goggles are on...
  173.    if(!IsInvActivated(player, 41))
  174.       DisableIRMode();
  175.  
  176.    // Clear the map mode flags
  177.    ClearMapModeFlags(0xffff);
  178.  
  179.    // and reset them to what they were.
  180.    SetMapModeFlags(old_flags);
  181.  
  182.    SetInvActivated(player, 23, 0);
  183.  
  184.    Return;
  185.  
  186. end
  187.  
  188.  
  189.